package com.lei.test;

import reactor.core.publisher.Flux;
import reactor.core.publisher.Hooks;
import reactor.tools.agent.ReactorDebugAgent;


import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class ComplexStreamExample {
    public static void main0(String[] args) {

    }
    public static void main1(String[] args) {
        ReactorDebugAgent.init();

        Hooks.onOperatorDebug();
        List<String> words = Arrays.asList("apple", "banana", "orange", "grape", "avocado", "blueberry");

        List<String> result = words.stream()
                // 过滤长度大于5的单词
                .filter(word -> word.length() > 5)
                // 将单词转换为大写形式
                .map(String::toUpperCase)
                // 将每个单词拆分为字符，并放入新的流中
                .flatMap(word -> Arrays.stream(word.split("")))
                // 去重
                .distinct()
                // 按照字母顺序排序
                .sorted()
                // 在每个字符上执行某些操作，并打印调试信息
                .peek(System.out::println)
                // 取前4个字符
                .limit(4)
                // 跳过前两个字符
                .skip(2)
                // 使用takeWhile，保留小于'F'的字符
                .takeWhile(ch -> ch.charAt(0) < 'F')
                // 收集结果并转为列表
                .collect(Collectors.toList());
        System.out.println("Result: " + result);
    }
}